package com.blb.marrysystem.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.blb.marrysystem.entity.*;
import com.blb.marrysystem.entity.dto.DetailsPackageDto;
import com.blb.marrysystem.entity.dto.DetailsRoomDto;
import com.blb.marrysystem.entity.dto.HotelDto;
import com.blb.marrysystem.entity.dto.HotelPackageDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (TbHotel)表数据库访问层
 *
 * @author makejava
 * @since 2023-01-11 09:22:27
 */
@Mapper
public interface TbHotelDao extends BaseMapper<TbShoppingcart> {

    /**
     * 通过ID查询单条数据
     *
     * @param hotelId 主键
     * @return 实例对象
     */
    TbHotel queryById(Integer hotelId);

    /**
     * 查询指定行数据
     *

     * @return 对象列表
     */
    List<TbHotel> queryAllByLimit();

    /**
     * 统计总行数
     *
     * @param tbHotel 查询条件
     * @return 总行数
     */
    long count(TbHotel tbHotel);

    /**
     * 新增数据
     *
     * @param tbHotel 实例对象
     * @return 影响行数
     */
    int insert(TbHotel tbHotel);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<TbHotel> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<TbHotel> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<TbHotel> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<TbHotel> entities);

    /**
     * 修改数据
     *
     * @param tbHotel 实例对象
     * @return 影响行数
     */
    int update(TbHotel tbHotel);

    /**
     * 通过主键删除数据
     *
     * @param hotelId 主键
     * @return 影响行数
     */
    int deleteById(Integer hotelId);

    Page<HotelDto> queryByPage(Page<HotelDto> hotelDtoPage,@Param("latest") String latest);

    Page<HotelDto> queryByPageSearch(Page<HotelDto> hotelDtoPage, @Param("latest") String latest, @Param("search") String search);

    List<DetailsRoomDto> detailsRoomList(HotelDto hotelDto);

    List<TbInformation> detailsInformation(HotelDto hotelDto);

    List<DetailsPackageDto> detailsPackage(HotelDto hotelDto);

    List<TbPackage> packageInformation(@Param("packageId") String packageId);


    List<HotelDto> hotelList();

    List<DetailsPackageDto> otherPackageInformation(@Param("packageId") String packageId,@Param("tbHotelHotelId") Integer tbHotelHotelId);

    List<HotelPackageDto> selectHotelList();

    List<TbUser> loginText(@Param("telephoneNumber") String telephoneNumber);

    void userInsert(@Param("telephoneNumber") String telephoneNumber,@Param("passWord") String passWord);

    List<TbShoppingcart> shopCart(@Param("userTel") String userTel);

    void computerUpdate(@Param("number1") String number1,@Param("shopId") String shopId);

    List<TbOrder> order(@Param("userTel") String userTel);

    void orderInsert(TbOrder tbOrder);
}

